﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.ComponentModel;
using System.IO;
using VideoLink.Utility;

namespace FileLink.FilesInfo
{
    /// <summary>
    /// Представляет файл, предназначеный для передачи, при отображении на форме
    /// </summary>
    
    public class FileView
    {
        #region Public properties

        /// <summary>
        /// Неполное имя файла, используется при отображении
        /// </summary>
        [DisplayName("Имя")]
        public string FileNameForView
        {
            get
            {
                return Path.GetFileName(Info.FullName);
            }
        }

        /// <summary>
        /// Размер файла в байтах
        /// </summary>
        [DisplayName("Размер")]
        public long Size
        {
            get
            {
                return Info.Size;
            }
        }

        /// <summary>
        /// Процент переданных или принятых данных, от общей длины файла.
        /// Принимает значения от 0 до 100 включительно.
        /// </summary>
        [DisplayName("Прогресс")]
        public int TransmitProgress { get; private set; }

        /// <summary>
        /// Количество переданных или полученных фрагментов файла.
        /// Синхронизируется с Info.FragmentsTransmitted
        /// </summary>
        [Browsable(false)]
        public int FragmentsTransmitted
        {
            get
            {
                return Info.FragmentsTransmitted;
            }
            set
            {
                Info.FragmentsTransmitted = value;
                TransmitProgress = (Info.FragmentsTransmitted * 100)
                    / Info.FragmentsCount;
            }
        }

        /// <summary>
        /// Информация об отображаемом файле
        /// </summary>
        [Browsable(false)]
        public FileHeader Info { get; private set; }

        #endregion

        /// <summary>
        /// Создать экземпляр класса, который представляет указанный файл
        /// </summary>
        public FileView(FileHeader info)
        {
            Info = info;
        }
    }
}
